package main.java.com.chankudo.thread;


/**
 * SimpleRunnable
 * 通过继承 Runnale 接口实现多线程的一个简单例子
 */
public class SimpleRunnable implements Runnable{
    public static final int DELAY = 10;
    private int idx;

    public SimpleRunnable(int idx) {
        this.idx = idx;
    }

    @Override
    public void run() {
        System.out.println("Runnning a runnable class. idx:"+this.idx);
        try {
            Thread.sleep((int)(DELAY*Math.random()));
        } catch (InterruptedException e) {
            // 调用sleep或wait，线程被阻塞，此时如果接到中断信号就会进入到这个异常处理中。
            e.printStackTrace();
        }
        System.out.println("Ending a runnable class. idx:"+this.idx);
        return;
    }
    
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++){
            // 当 new 一个线程的时候，该进程处于 New（新建）的状态
            SimpleRunnable simpleRunnable = new SimpleRunnable(i);
            // runnable 对象并不能直接start 需要作为参数传给Thread类的构造方法，从而获取一个线程的实例。
            Thread t = new Thread(simpleRunnable);
            // 当执行线程的 start 方法的时候，该进程处于Runnable（可运行）状态
            t.start();
        }
        
    }


    
}
